// 引入数据管理工具
const db = require('../../utils/db.js');

Page({
  data: {
    content: '',
    author: '',
    isAnonymous: false,
    contact: '',
    contactType: 'wechat', // 联系方式类型：wechat, qq, phone, email
    contactTypes: ['微信', 'QQ', '手机', '邮箱'],
    contactTypeIndex: 0,
    contactPlaceholder: '请输入微信号'
  },

  onLoad() {
    // 页面加载时获取用户信息
    const app = getApp();
    if (app.globalData.userInfo) {
      this.setData({
        author: app.globalData.userInfo.nickName
      });
    }
  },

  // 输入内容
  onContentInput(e) {
    this.setData({
      content: e.detail.value
    });
  },

  // 输入姓名
  onAuthorInput(e) {
    this.setData({
      author: e.detail.value
    });
  },

  // 输入联系方式
  onContactInput(e) {
    this.setData({
      contact: e.detail.value
    });
  },

  // 切换匿名
  toggleAnonymous(e) {
    const isAnonymous = typeof e.detail.value !== 'undefined' ? e.detail.value : !this.data.isAnonymous;
    this.setData({
      isAnonymous: isAnonymous
    });
  },

  // 选择联系方式类型
  onContactTypeChange(e) {
    const index = e.detail.value;
    let contactType = 'wechat';
    let placeholder = '请输入微信号';
    
    switch(parseInt(index)) {
      case 0: // 微信
        contactType = 'wechat';
        placeholder = '请输入微信号';
        break;
      case 1: // QQ
        contactType = 'qq';
        placeholder = '请输入QQ号';
        break;
      case 2: // 手机
        contactType = 'phone';
        placeholder = '请输入手机号';
        break;
      case 3: // 邮箱
        contactType = 'email';
        placeholder = '请输入邮箱地址';
        break;
    }
    
    this.setData({
      contactTypeIndex: index,
      contactType: contactType,
      contactPlaceholder: placeholder
    });
  },

  // 简单的内容安全检查（基础版）
  checkContentSecurity(content) {
    // 简单的敏感词检查
    const sensitiveWords = ['敏感词1', '敏感词2', '敏感词3']; // 实际应用中应从服务器获取敏感词库
    for (let word of sensitiveWords) {
      if (content.includes(word)) {
        return false;
      }
    }
    return true;
  },

  // 发布表白
  async publishConfession() {
    const { content, author, isAnonymous, contact, contactType } = this.data;
    
    // 验证输入
    if (!content.trim()) {
      wx.showToast({
        title: '请输入表白内容',
        icon: 'none'
      });
      return;
    }
    
    // 检查内容安全
    const isSafe = this.checkContentSecurity(content);
    if (!isSafe) {
      wx.showToast({
        title: '内容包含敏感信息，请修改后重新发布',
        icon: 'none'
      });
      return;
    }
    
    // 如果不是匿名，需要填写姓名
    if (!isAnonymous && !author.trim()) {
      wx.showToast({
        title: '请输入姓名或选择匿名',
        icon: 'none'
      });
      return;
    }
    
    // 验证联系方式格式
    if (contact.trim()) {
      const { validatePhone, validateEmail, validateQQ, validateWechat } = require('../../utils/format.js');
      let isValid = false;
      
      switch (contactType) {
        case 'phone':
          isValid = validatePhone(contact);
          break;
        case 'email':
          isValid = validateEmail(contact);
          break;
        case 'qq':
          isValid = validateQQ(contact);
          break;
        case 'wechat':
          isValid = validateWechat(contact);
          break;
      }
      
      if (!isValid) {
        wx.showToast({
          title: '请输入正确的联系方式',
          icon: 'none'
        });
        return;
      }
    }
    
    // 构造数据
    const data = {
      content: content.trim(),
      author: isAnonymous ? '匿名用户' : (author.trim() || '匿名用户'),
      isAnonymous: isAnonymous,
      contact: contact.trim(),
      contactType: contactType,
      createTime: new Date()
    };
    
    // 显示加载提示
    wx.showLoading({
      title: '发布中...'
    });
    
    try {
      // 调用数据库发布表白
      const id = await db.publishConfession(data);
      
      if (id) {
        wx.hideLoading();
        wx.showToast({
          title: '发布成功',
          icon: 'success'
        });
        
        // 清空表单
        this.resetForm();
        
        // 返回首页
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          });
        }, 1500);
      } else {
        throw new Error('发布失败');
      }
    } catch (error) {
      console.error('发布表白失败:', error);
      wx.hideLoading();
      wx.showToast({
        title: '发布失败',
        icon: 'none'
      });
    }
  },

  // 重置表单
  resetForm() {
    this.setData({
      content: '',
      author: '',
      isAnonymous: false,
      contact: '',
      contactType: 'wechat',
      contactTypeIndex: 0,
      contactPlaceholder: '请输入微信号'
    });
  }
})